package org.ewaf.framework.dao;

import java.util.List;

import org.ewaf.framework.model.IDataObject;
import org.ewaf.framework.model.ListModel;



public interface IBaseDao {
	
	/**
	 * 新增业务对象
	 */
	void create(IDataObject data);
	
	/**
	 * 更新业务对象
	 * @return 更新是否成功 
	 */
	boolean update(IDataObject data);
	
	/**
	 * 根据主键删除业务对象
	 * @return 删除是否成功
	 */
	boolean deleteById(Object id);
	
	/**
	 * 查询符合条件的业务对象总数
	 * @return 业务对象总数
	 */
	int countByCondition(ListModel listModel);
	/*
	 * 查询业务对象总数 
	 */
	int count();
	/**
	 * 查询符合条件的业务对象
	 * @return 业务对象列表。若符合条件的对象不存在，则返回空列表。
	 */
	List<IDataObject> query(ListModel listModel);
	
	/**
	 * 根据主键查找业务对象
	 * @return 业务对象。若对象不存在，则返回null。
	 */
	IDataObject getById(Object id);
	
	/**
	 * 根据主键查找多个业务对象
	 * @return 业务对象列表。若对象不存在，则返回空列表。
	 */
	List<IDataObject> getByIds(Object[] ids);
	
	/**
	 * 根据主键查找多个业务对象
	 * @return 业务对象列表。若对象不存在，则返回空列表。
	 */
	List<IDataObject> getByIdList(List<?> idList);
	
}
